package com.winai.launcher.override;

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.CountDownTimer;

import com.ks.projectbasictools.utils.LogUtils;
import com.taobao.sophix.SophixManager;
import com.winai.launcher.constant.Constant;

/**
 * 作者：康少
 * 时间：2019/11/28 0028
 * 说明：检查系统更新倒计时，6个小时检查一次
 */
public class UpdateCountTimer extends CountDownTimer {
    private Context context;
    @SuppressLint("StaticFieldLeak")
    private static UpdateCountTimer mInstance;

    public static UpdateCountTimer getInstance(Context context) {
        return getInstance(context, Constant.HOUR * 6);
    }

    /**
     *
     * @param millisInFuture 倒计时总时间（如60S，120s等）
     */
    public static UpdateCountTimer getInstance(Context context, long millisInFuture) {
        if (mInstance == null) {
            synchronized (UpdateCountTimer.class) {
                if (mInstance == null) {
                    mInstance = new UpdateCountTimer(millisInFuture, 1000, context);
                }
            }
        }
        return mInstance;
    }

    /**
     * 说明：重置计时器
     */
    public static void restart(Context context) {
        release();
        getInstance(context).start();
    }

    /**
     * 说明：重置计时器
     */
    public static void restart(Context context, long millisInFuture) {
        release();
        getInstance(context, millisInFuture).start();
    }

    /**
     * 说明：释放定时器
     */
    public static void release() {
        if (mInstance != null) {
            mInstance.cancel();
        }
        mInstance = null;
    }

    /**
     * 参数 millisInFuture       倒计时总时间（如60S，120s等）
     * 参数 countDownInterval    渐变时间（每次倒计1s）
     */
    public UpdateCountTimer(long millisInFuture, long countDownInterval, Context context) {
        super(millisInFuture, countDownInterval);
        this.context = context;
    }

    // 计时完毕时触发
    @Override
    public void onFinish() {
        // queryAndLoadNewPatch不可放在attachBaseContext 中，否则无网络权限，建议放在后面任意时刻，如onCreate中
        LogUtils.i("检查一次系统更新");
        //TODO 更换账号之后放开
//        SophixManager.getInstance().queryAndLoadNewPatch();
        restart(context);
    }

    // 计时过程显示
    @Override
    public void onTick(long millisUntilFinished) {
        /*LogUtils.i("进入更新检查倒计时：" + millisUntilFinished + "。计时器：" + mInstance);*/
    }
}
